A Distributed Data Store (DDS) can utilize thousands of disks spread across a large number of servers to function as a single large scalable storage repository. To protect against data loss and to provide increased data availability in the event of disk or server failures, a DDS often creates multiple copies of the data stored within it and disperses the copies across multiple disks, servers and potentially across multiple datacenters. By having multiple copies of data dispersed, the DDS must handle the issues of maintaining data consistency between the copies as updates to the data are made. How the DDS handles these data consistency issues and what consistency guarantees the DDS provides to its clients for various storage operations has substantial impact on both the usability of the storage and the performance of the system.
Two levels of consistency commonly used to describe a DDS are Strong Consistency (SC) and Eventual Consistency (EC). SC guarantees that the latest write will be readable by all clients as soon as the write completes. EC guarantees very little and only provides that eventually the system will have synchronized past the latest write and eventually that write will be readable from all clients but before that future point of time clients can read stale data. Providing SC can increase the complexity of the DDS implementation and introduce additional overhead to operations in order to enforce the consistency. Providing EC decreases the usability of the storage system because all clients that use the storage must be capable of handling stale data for an indeterminate period of time.
Object storage is a type of DDS that provides storage of objects, variably sized chunks of unstructured data associated with unique identifiers, commonly known as the object name. Object storage often provides a hybrid data consistency model with some operations providing SC guarantees and others providing EC guarantees. One such hybrid-consistency model for object storage, used by Amazon S3 and OpenStack Swift, is guaranteeing SC for read-after-create operations and EC for read-after-overwrite operations. This Hybrid-Consistency Object Storage (HCOS) model provides guaranteed availability of all newly created objects to all clients immediately, but modifications to any existing objects can be seen out of order or not at all by clients for a period of time.